/**axios封装
 * 请求拦截、相应拦截、错误统一处理
 */
import axios from "axios";
import Router from "vue-router";
axios.defaults.baseURL = baseUrl.bsIp + "/api";

// 请求超时时间
// axios.defaults.timeout = 20000;
//
// post请求头
axios.defaults.headers.post["Content-Type"] =
  "application/x-www-form-urlencoded;charset=UTF-8";
// 请求拦截器
axios.interceptors.request.use(
  (config) => {
    // 每次发送请求之前判断是否存在token，如果存在，则统一在http请求的header都加上token，不用每次请求都手动添加了
    // 即使本地存在token，也有可能token是过期的，所以在响应拦截器中要对返回状态进行判断
    // console.log(config)
    config.headers = {
      "content-type": "application/json;charset=UTF-8",
      // Token: "C0FD61EDA8A94248B1033706BD090555", //集成
      Token: window.sessionStorage.getItem("Token"), //单独部署
      // Authorization:
      //   "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJVc2VySWQiOiJvajZudzVLcXEzU1BicExCTlU2UzFjRF96OGFVIiwibmJmIjoxNzQ0NzYxOTQ4LCJleHAiOjE3NzYyOTc5NDgsImlzcyI6IjEyMyIsImF1ZCI6IjEyMyJ9.goZOcaq-xroSqoDHd1sve0uHSYjldJOCQY3VuSdrN5Q",
    };
    return config;
  },
  (error) => {
    return Promise.error(error);
  }
);

// 响应拦截器
axios.interceptors.response.use(
  (config) => {
    return config;
  },
  (error) => {
    if (error.response.status == 401) {
      window.sessionStorage.removeItem("Token");
    }
    return Promise.error(error);
  }
);
/**
 * get方法，对应get请求
 * @param {String} url [请求的url地址]
 * @param {Object} params [请求时携带的参数]
 */
export function get(url, params) {
  return new Promise((resolve, reject) => {
    axios
      .get(url, {
        params: params,
      })
      .then((res) => {
        resolve(res.data);
      })
      .catch((err) => {
        reject(err.data);
      });
  });
}
/**
 * post方法，对应post请求
 * @param {String} url [请求的url地址]
 * @param {Object} params [请求时携带的参数]
 */
export function post(url, params) {
  return new Promise((resolve, reject) => {
    axios
      .post(url, params)
      .then((res) => {
        resolve(res.data);
      })
      .catch((err) => {
        reject(err.data);
      });
  });
}
/**
 * put方法，对应put请求
 * @param {String} url [请求的url地址]
 * @param {Object} params [请求时携带的参数]
 */
export function put(url, params) {
  return new Promise((resolve, reject) => {
    axios
      .put(url, params)
      .then((res) => {
        resolve(res.data);
      })
      .catch((err) => {
        reject(err.data);
      });
  });
}
